package br.com.spb.persistence;

import  br.com.spb.domain.Prefeito;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import br.com.spb.support.Dao;

 
@SuppressWarnings("unchecked")
public class PrefeitoDao extends Dao<Prefeito>{
     
    /**
     * @param codMunicipio
     * @param codMunicipioOrigem
     * @param codPartido
     * @param nome
     * @return
     */
    public List<Prefeito> findByParametros(Long codMunicipio, Long codMunicipioOrigem, Long codPartido,String nome) {
        Criteria criteria = createCriteria();

        if (codMunicipio != null) {
        	criteria.add(Restrictions.eq("codMunicipio", codMunicipio));
        }
        
        if (codMunicipioOrigem != null) {
        	criteria.add(Restrictions.eq("codMunicipioOrigem", codMunicipioOrigem));
        }
        
        if (codPartido != null) {
        	criteria.add(Restrictions.eq("codPartido", codPartido));
        }
        
        if (nome != null) {
            criteria.add(Restrictions.like("nome", nome, MatchMode.ANYWHERE).ignoreCase()); 
        }
         
        criteria.addOrder(Order.asc("nome"));

		List<Prefeito> lista = (List<Prefeito>) criteria.list();

        return lista;
    } 
}
